package com.turing.data.service.review;

import com.turing.common.response.ResponseVO;
import com.turing.common.util.Tools;
import com.turing.data.model.domain.element.Element;
import com.turing.data.model.domain.review.ModelContent;
import com.turing.data.model.domain.review.ReviewContent;
import com.turing.data.model.dto.produre.ExportFileDto;
import com.turing.data.model.dto.review.ReviewContentDto;
import com.turing.data.vo.in.element.ReviewContentVo;
import com.turing.data.vo.in.review.ForecastVO;
import com.turing.data.vo.out.review.ResultVO;
import com.turing.data.vo.out.review.TaskElementVO;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;

public interface ReviewOperationService {

    boolean updateReviewContent(ReviewContentVo reviewContentVo);

    /**
     * 完成任务
     *
     * @param taskSn 任务id
     * @return java.lang.boolean
     * @author lcy
     * @date 2021/8/11 11:32
     **/
    boolean finishReviewTask(String taskSn);

    /**
     * 校验子场景任务下的要素是否都已完成
     *
     * @param allTaskSns 所有子任务id
     * @author lcy
     * @date 2021/6/16 17:49
     **/
    void completeProductTask(List<String> allTaskSns);

    /**
     * 上传文件
     *
     * @param exportFileDto 导出信息
     * @author lcy
     * @date 2021/8/17 14:28
     **/
    void uploadFiLe(ExportFileDto exportFileDto);

    boolean addSingle(ReviewContentVo content);

    boolean delSingle(ReviewContentVo content);

    boolean addBatch(List<ReviewContentVo> contents);

    boolean delBatch(List<ReviewContentVo> contents);

    boolean addRow(List<ReviewContentVo> contents);

    boolean delRow(List<ReviewContentVo> contents);

    boolean uploadModelContent(List<ModelContent> modelContents);

    boolean populateEmptyElements(String taskSn, String templateSn);

    void saveModelContents(Map<String, List<ForecastVO>> forecastEntity, String taskSn, String parentTaskSn, List<Element> elements);

    Boolean removeTasks(List<String> parentTaskSns);

}
